The implementation of software applications based on object-oriented programming techniques is well known in the art and has been in widespread use since the late 1980's.
Although providing several noteworthy advantages over classical top-down programming techniques, it is acknowledged that applications based on object-oriented programming techniques are inefficient for a number of reasons:    1. traditional object-oriented applications require an underlying database structure to be designed and provided in order to support the application;    2. the objects which form the components of an application are local to that application only, without any relationship to extraneous objects or applications;    3. the object characteristics such as attributes, properties, inheritances and the like are static in nature. A change to any of these characteristics renders it necessary to recompile the affected objects and rebuild the application;    4. there is no global classification of objects, making it very difficult, if not impossible to construct applications which make use of objects which are distributed across a number of remote servers; and    5. the separation of objects and data necessitates the provision of separate facilities for data management and streaming of data to physical hardware devices.
It is desirable to provide an application programming system which allows the development of distributed object-oriented applications which are simple to adapt, modify and extend.